/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.web.managedbeans;

import cl.bussines.entities.Operaciones;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;

/**
 *
 * @author Vogel
 */
@ManagedBean(name="operacionMBean")
@SessionScoped
public class OperacionMBean extends BaseMBean{

    private static final String VISTA_LISTAR = "operaciones";
    private static final String VISTA_CREAR = "operacionesCrear";
    private static final String VISTA_EDITAR = "operacionesEditar";
    
    private List<Operaciones> operaciones;
    @EJB
    private cl.bussines.ejbs.OperacionesFacade ejbFacade;
    private static Logger LOG = Logger.getLogger(OperacionMBean.class);
    private Operaciones operacion = new Operaciones();  
    private String horas;
    private String minutos;
    
    public String init(){
        return VISTA_LISTAR;
    }
  
    public String delete(){
        try{
            int codigo = Integer.parseInt(getParam("codigo"));
            String index = getParam("index");

            LOG.info("Codigo del operacion a editar ["+codigo+"]");
            LOG.info("Index de la tabla ["+index+"]");
            for(Operaciones oper : operaciones){ 
                if(oper.getIdOperaciones()==codigo){
                    LOG.info("Entro a setear la operacion;");
                    this.operacion = oper;
                }
            }
            if(operacion != null && operacion.getIdOperaciones()!=0){
                LOG.info("START::DELETE::");
                ejbFacade.remove(operacion);
                message(FacesMessage.SEVERITY_INFO,"Ha eliminado correctamente.");
            }
            
            operaciones.clear();
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al eliminar operacion.");
        }
        return VISTA_LISTAR;
    }
    
    public String volver(){
        operaciones.clear();
        return init();
    }
    
    public String irCrear(){
        operacion = new Operaciones();
        horas = "";
        minutos = "";
        return VISTA_CREAR;
    }
    
    public String irEditar(){
        LOG.info("ID operacion a editar ["+getParam("codigo")+"]");
        int codigo = Integer.parseInt(getParam("codigo"));
        String index = getParam("index");
        
        LOG.info("Codigo del operacion a editar ["+codigo+"]");
        LOG.info("Index de la tabla ["+index+"]");
        LOG.info("operaciones size ["+operaciones.size()+"]");
        for(Operaciones oper : operaciones){ 
            if(oper.getIdOperaciones()==codigo){
                LOG.info("Entro a setear la operacion;");
                this.operacion = oper;
            }
        }
        this.horas = String.valueOf(operacion.getTiempoEstimado().getHours());
        this.minutos = String.valueOf(operacion.getTiempoEstimado().getMinutes());
        return VISTA_EDITAR;
    }
    
    public String crear(){
     try {
         int ho = 0;
         int mi = 0;
         if(horas != null){
             ho = "".equals(horas.trim())?0:Integer.parseInt(horas);
         }
         if(minutos != null){
             mi = "".equals(minutos.trim())?0:Integer.parseInt(minutos);
         }
         Date tiempo = new Date();
         tiempo.setHours(ho);
         tiempo.setMinutes(mi);
         tiempo.setSeconds(0);
         operacion.setTiempoEstimado(tiempo);
         ejbFacade.create(operacion);
            message(FacesMessage.SEVERITY_INFO,"Ha sido creado correctamente.");
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al crear nuevo operacion.");
        }
        return VISTA_CREAR;
    }
    
    public String editar(){
      try {
            int ho = 0;
            int mi = 0;
            if(horas != null){
                ho = "".equals(horas.trim())?0:Integer.parseInt(horas);
            }
            if(minutos != null){
                mi = "".equals(minutos.trim())?0:Integer.parseInt(minutos);
            }
            Date tiempo = new Date();
            tiempo.setHours(ho);
            tiempo.setMinutes(mi);
            tiempo.setSeconds(0);
            operacion.setTiempoEstimado(tiempo);
            ejbFacade.edit(operacion);
            message(FacesMessage.SEVERITY_INFO,"Operacion editado correctamente.");
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al editar nuevo operacion.");
        }
        return VISTA_EDITAR;
    }

    public List<Operaciones> getOperaciones() {
         if(operaciones == null || operaciones.isEmpty()){
            operaciones = ejbFacade.findAll();
        }
        return operaciones;
    }

    public void setOperaciones(List<Operaciones> operaciones) {
        this.operaciones = operaciones;
    }

    public Operaciones getOperacion() {
        return operacion;
    }

    public void setOperacion(Operaciones operacion) {
        this.operacion = operacion;
    }

    public String getHoras() {
        return horas;
    }

    public void setHoras(String horas) {
        this.horas = horas;
    }

    public String getMinutos() {
        return minutos;
    }

    public void setMinutos(String minutos) {
        this.minutos = minutos;
    }

   
    
}
